package com.ruoyi.jinchuguanli.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.cangku.mapper.KucunguanliMapper;
import com.ruoyi.cangku.mapper.ShangpinguanliMapper;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.gongjulei;
import com.ruoyi.jinchuguanli.domain.Shangpin;
import com.ruoyi.jinchuguanli.domain.Tuihuochuli;
import com.ruoyi.jinchuguanli.domain.TuihuochuliReturn;
import com.ruoyi.jinchuguanli.mapper.TuihuochuliMapper;
import com.ruoyi.jinchuguanli.service.ITuihuochuliService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * tuihuoService业务层处理
 *
 * @author ruoyi
 * @date 2023-11-08
 */
@Service
public class TuihuochuliServiceImpl implements ITuihuochuliService {
    @Autowired
    private TuihuochuliMapper tuihuochuliMapper;

    @Autowired
    private KucunguanliMapper kucunguanliMapper;

    @Autowired
    private ShangpinguanliMapper shangpinguanliMapper;

    /**
     * 查询tuihuo
     *
     * @param id tuihuo主键
     * @return tuihuo
     */
    @Override
    public Tuihuochuli selectTuihuochuliById (Integer id) {
        return tuihuochuliMapper.selectTuihuochuliById(id);
    }

    /**
     * 查询tuihuo列表
     *
     * @param tuihuochuli tuihuo
     * @return tuihuo
     */
    @Override
    public List<Tuihuochuli> selectTuihuochuliList (Tuihuochuli tuihuochuli) {
        return tuihuochuliMapper.selectTuihuochuliList(tuihuochuli);
    }

    /**
     * 新增tuihuo
     *
     * @param tuihuochuli tuihuo
     * @return 结果
     */
    @Override
    public int insertTuihuochuli (Tuihuochuli tuihuochuli) {
        if (tuihuochuli.getTuihuoqufen().equals("顾客退货")) {
            gongjulei.kucunUpdate(tuihuochuli.getTuihuoshangpin(), kucunguanliMapper, "+");
        } else {
            gongjulei.kucunUpdate(tuihuochuli.getTuihuoshangpin(), kucunguanliMapper, "-");
        }
        return tuihuochuliMapper.insertTuihuochuli(tuihuochuli);
    }

    /**
     * 修改tuihuo
     *
     * @param tuihuochuli tuihuo
     * @return 结果
     */
    @Override
    public int updateTuihuochuli (Tuihuochuli tuihuochuli) {
        Tuihuochuli tuihuochuli1 = tuihuochuliMapper.selectTuihuochuliById(tuihuochuli.getId());
        if (tuihuochuli.getTuihuoqufen().equals("顾客退货")) {
            gongjulei.kucunUpdate(tuihuochuli.getTuihuoshangpin(), tuihuochuli1.getTuihuoshangpin(), kucunguanliMapper, "+");
        } else {
            gongjulei.kucunUpdate(tuihuochuli.getTuihuoshangpin(), tuihuochuli1.getTuihuoshangpin(), kucunguanliMapper, "-");
        }
        return tuihuochuliMapper.updateTuihuochuli(tuihuochuli);
    }

    /**
     * 批量删除tuihuo
     *
     * @param ids 需要删除的tuihuo主键
     * @return 结果
     */
    @Override
    public int deleteTuihuochuliByIds (String ids) {
        return tuihuochuliMapper.deleteTuihuochuliByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除tuihuo信息
     *
     * @param id tuihuo主键
     * @return 结果
     */
    @Override
    public int deleteTuihuochuliById (Integer id) {
        return tuihuochuliMapper.deleteTuihuochuliById(id);
    }

    @Override
    public List<TuihuochuliReturn> selectTuihuochuliReturnList (Tuihuochuli tuihuochuli) {
        List<Tuihuochuli> tuihuochuliList = tuihuochuliMapper.selectTuihuochuliList(tuihuochuli);
        List<TuihuochuliReturn> tuihuochuliReturnList = new ArrayList<>();
        for (Tuihuochuli t : tuihuochuliList) {
            TuihuochuliReturn tuihuochuliReturn = new TuihuochuliReturn();
            BeanUtils.copyProperties(t, tuihuochuliReturn);
            List<Shangpin> shangpinList = JSONObject.parseArray(t.getTuihuoshangpin(), Shangpin.class);
            tuihuochuliReturn.setShangpin(shangpinList);
            tuihuochuliReturnList.add(tuihuochuliReturn);
        }
        return tuihuochuliReturnList;
    }

    @Override
    public int updateTuihuochuliReturn (TuihuochuliReturn tr) {
        Tuihuochuli tuihuochuli = new Tuihuochuli();
        BeanUtils.copyProperties(tr, tuihuochuli);
        String jsonStr = JSONObject.toJSONString(tr.getShangpin());
        tuihuochuli.setTuihuoshangpin(jsonStr);
        return tuihuochuliMapper.updateTuihuochuli(tuihuochuli);
    }

    @Override
    public TuihuochuliReturn aReturnFormat(Tuihuochuli tuihuochuli) {
        return gongjulei.aReturnFormat(tuihuochuli,shangpinguanliMapper);
    }
}
